import request from '@/utils/request'

// 用户相关接口
export const userApi = {
  // 用户登录
  login: (data) => {
    return request({
      url: '/api/users/checkLogin',
      method: 'post',
      data
    })
  },
  // 创建用户
  create: (data) => {
    console.log('API create调用，数据:', data);
    return request({
      url: '/api/users',
      method: 'post',
      data
    })
  },
  // 获取用户详情
  getById: (userId) => {
    return request({
      url: `/api/users/${userId}`,
      method: 'get'
    })
  },
  // 更新用户信息
  update: (userId, data) => {
    console.log('API update调用，用户ID:', userId, '数据:', data);
    
    // 创建一个新的副本，防止修改原始对象
    const updateData = { ...data };
    
    // 移除userId字段，因为它已经在URL中
    delete updateData.userId;
    
    return request({
      url: `/api/users/${userId}`,
      method: 'put',
      data: updateData
    })
  },
  // 删除用户
  delete: (userId) => {
    return request({
      url: `/api/users/${userId}`,
      method: 'delete'
    })
  },
  // 分页查询用户（支持按用户号、姓名、角色等条件筛选）
  list: (params) => {
    return request({
      url: '/api/users',
      method: 'get',
      params
    })
  },
  // 根据教师ID查询用户列表（带分页）
  listByTeacherId: (teacherId, page = 1, size = 10) => {
    return request({
      url: `/api/users/teachers/${teacherId}/students`,
      method: 'get',
      params: { page, size }
    })
  },
  // 重置密码
  resetPassword: (userId, data) => {
    return request({
      url: `/api/users/${userId}/password/reset`,
      method: 'post',
      data
    })
  }
}

// 测试结果相关接口
export const testResultApi = {
  // 创建测试结果
  create: (data) => {
    return request({
      url: '/api/testResults',
      method: 'post',
      data
    })
  },
  // 获取测试结果详情
  getById: (id) => {
    return request({
      url: `/api/testResults/byId/${id}`,
      method: 'get'
    })
  },
  // 获取用户的测试结果
  getByUserId: (userId) => {
    return request({
      url: `/api/testResults/byUserId/${userId}`,
      method: 'get'
    })
  },
  // 更新测试结果
  update: (data) => {
    return request({
      url: '/api/testResults/byId',
      method: 'put',
      data
    })
  },
  // 删除测试结果
  delete: (id) => {
    return request({
      url: `/api/testResults/byId/${id}`,
      method: 'delete'
    })
  },
  // 查询测试结果列表
  list: (params) => {
    return request({
      url: '/api/testResults',
      method: 'get',
      params
    })
  }
}

// MBTI类型描述相关接口
export const mbtiTypeApi = {
  // 创建MBTI类型描述
  create: (data) => {
    return request({
      url: '/api/mbti_type_description',
      method: 'post',
      data
    })
  },
  // 获取MBTI类型描述
  get: (mbtiType) => {
    return request({
      url: `/api/mbti_type_description/${mbtiType}`,
      method: 'get'
    })
  },
  // 更新MBTI类型描述
  update: (mbtiType, data) => {
    return request({
      url: `/api/mbti_type_description/${mbtiType}`,
      method: 'put',
      data
    })
  },
  // 删除MBTI类型描述
  delete: (mbtiType) => {
    return request({
      url: `/api/mbti_type_description/${mbtiType}`,
      method: 'delete'
    })
  },
  // 查询MBTI类型描述列表（支持分页和模糊查询）
  list: (params) => {
    return request({
      url: '/api/mbti_type_description',
      method: 'get',
      params
    })
  }
}

// 问题管理接口
export const questionApi = {
  // 获取问题列表
  list(params) {
    return request({
      url: '/api/questions',
      method: 'get',
      params
    })
  },
  // 创建问题
  create(data) {
    return request({
      url: '/api/questions',
      method: 'post',
      headers: {
        'Content-Type': 'application/json'
      },
      data: JSON.stringify(data)
    })
  },
  // 批量创建问题
  batchCreate(questions) {
    return request({
      url: '/api/questions/batch',
      method: 'post',
      headers: {
        'Content-Type': 'application/json'
      },
      data: JSON.stringify({
        questions: questions
      })
    })
  },
  // 更新问题
  update(id, data) {
    return request({
      url: `/api/questions/${id}`,
      method: 'put',
      headers: {
        'Content-Type': 'application/json'
      },
      data: JSON.stringify(data)
    })
  },
  // 删除问题
  delete(id) {
    return request({
      url: `/api/questions/${id}`,
      method: 'delete'
    })
  }
}

// 测试相关接口
export const testApi = {
  // 获取测试题目
  getQuestions(page = 1, size = 10, dimension) {
    const params = {
      page,
      size
    }
    if (dimension) {
      params.dimension = dimension
    }
    return request({
      url: '/api/questions',
      method: 'get',
      params
    })
  },
  // 获取所有测试题目（不分页）
  getAllQuestions() {
    return request({
      url: '/api/questions/all',
      method: 'get'
    })
  },
  // 提交测试结果
  submitResult(data) {
    return request({
      url: '/api/testResults',
      method: 'post',
      data
    })
  },
  // 获取测试结果
  getResult(id) {
    return request({
      url: `/api/testResults/byId/${id}`,
      method: 'get'
    })
  },
  // 获取用户的所有测试结果
  getResultsByUserId(userId) {
    return request({
      url: `/api/testResults/byUserId/${userId}`,
      method: 'get'
    })
  }
}

export default {
  userApi,
  testResultApi,
  mbtiTypeApi,
  questionApi,
  testApi
} 